<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>与POSIX正则表达式的不同</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="reference.pcre.pattern.differences.html">与 perl 的不同之处</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="ref.pcre.html">PCRE 函数</a></div>
 <div class="up"><a href="pcre.pattern.html">PCRE模式</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="reference.pcre.pattern.posix" class="article">
 <h1>与POSIX正则表达式的不同</h1>


 <p class="para">
 自 PHP 5.3.0起， <a href="book.regex.html" class="link">POSIX 正则表达式</a>扩展被废弃。在 POSIX 正则和
 PCRE 正则之间有一些不同，本页列出了在转向PCRE 时最显著的需要知道的不同点。
 </p>

 <p class="para">
  <ol type="1">
   <li class="listitem">
    <span class="simpara">
    PCRE 函数需要模式以<a href="regexp.reference.delimiters.html" class="link">分隔符</a>闭合。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
    不像POSIX，PCRE 扩展没有专门用于大小写不敏感匹配的函数。取而代之的是，支持使用<em class="emphasis">i</em> (<em>PCRE_CASELESS</em>) 
    <a href="reference.pcre.pattern.modifiers.html" class="link">模式修饰符</a>完成同样的工作。
    其他模式修饰符同样可用于改变匹配策略。
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
    POSIX 函数从最左面开始寻找最长的匹配，但是 PCRE 在第一个合法匹配后停止。如果字符串
    不匹配这没有什么区别，但是如果匹配，两者在结果和速度上都会有差别。
    </span>
    <span class="simpara">
    为了说明这个不同, 考虑下面的例子(来自Jeffrey Friedl 的《精通正则表达式》一书)。 使用模式
    <em>one(self)?(selfsufficient)?</em> 在字符串<em>oneselfsufficient</em>
     上匹配，PCRE 会匹配到<em>oneself</em>，但是使用 POSIX，结果将是整个字符串
    <em>oneselfsufficient</em>。 两个子串都匹配原始字符串，但是 POSIX 将
    最长的最为结果。
    </span>
   </li>
  </ol>
 </p>

 <p class="para">
  <table class="doctable table">
   <caption><strong>函数对照表</strong></caption>
   
    <thead>
     <tr>
      <th>POSIX</th>
      <th>PCRE</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td><span class="function"><a href="function.ereg-replace.html" class="function">ereg_replace()</a></span></td>
      <td><span class="function"><a href="function.preg-replace.html" class="function">preg_replace()</a></span></td>
     </tr>

     <tr>
      <td><span class="function"><a href="function.ereg.html" class="function">ereg()</a></span></td>
      <td><span class="function"><a href="function.preg-match.html" class="function">preg_match()</a></span></td>
     </tr>

     <tr>
      <td><span class="function"><a href="function.eregi-replace.html" class="function">eregi_replace()</a></span></td>
      <td><span class="function"><a href="function.preg-replace.html" class="function">preg_replace()</a></span></td>
     </tr>

     <tr>
      <td><span class="function"><a href="function.eregi.html" class="function">eregi()</a></span></td>
      <td><span class="function"><a href="function.preg-match.html" class="function">preg_match()</a></span></td>
     </tr>

     <tr>
      <td><span class="function"><a href="function.split.html" class="function">split()</a></span></td>
      <td><span class="function"><a href="function.preg-split.html" class="function">preg_split()</a></span></td>
     </tr>

     <tr>
      <td><span class="function"><a href="function.spliti.html" class="function">spliti()</a></span></td>
      <td><span class="function"><a href="function.preg-split.html" class="function">preg_split()</a></span></td>
     </tr>

     <tr>
      <td><span class="function"><a href="function.sql-regcase.html" class="function">sql_regcase()</a></span></td>
      <td><em class="emphasis">无对等函数</em></td>
     </tr>

    </tbody>
   
  </table>

 </p>
</div>
<hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="reference.pcre.pattern.differences.html">与 perl 的不同之处</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="ref.pcre.html">PCRE 函数</a></div>
 <div class="up"><a href="pcre.pattern.html">PCRE模式</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
